package com.qf.juc.day02;

/**
 * 验证：
 *   JMM ： 默认情况下： 线程之间的数据是私有的  是不可见的
 *   可见性： volitile 关键字才能使的线程之间的数据是可见的
 */
public class VolatileDemo {

    //变量  目前：是不可见的 是私有的  CPU缓存中的 并没有存在主内存中
    private static volatile Integer flag = 1;

    public static void main(String[] args)  throws InterruptedException {//主线程  线程A

        ////////////////////////////////////////
        new Thread(new Runnable() {//子线程 线程B
            @Override
            public void run() {
                System.out.println("我是子线程工作内存flag的值：" + flag);
                while(flag == 1){//无限循环
                }
                System.out.println("子线程操作结束..." + flag);
            }
        }).start();
        Thread.sleep(500);

        //////////////////////////////////////

        flag = 2;
        System.out.println("我是主线程工作内存flag的值：" + flag);
    }
}